"""
    用于任务的新建功能，新建任务，填写任务基本信息，进行工具的配置：上传JSON配置，
"""


import time

from automatic import page
from automatic.base.base import Base
from automatic.base.get_logger import GetLogger
from automatic.tools.file_upload import FileUpload

# 获取log日志器
log = GetLogger().get_logger()


class PageTaskAdd(Base):
    #点击新建任务
    def task_add_click_new_task(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_add_new))
        self.base_click(page.task_add_new)


    #输入任务名称
    def task_add_input_task_name(self,task_name):
        log.info("[page_task_add]:对{}元素进行输入任务名称：{}操作".format(page.task_name,task_name))
        self.base_input(page.task_name,task_name)

    #输入任务描述
    def task_add_input_task_descript(self,task_description):
        log.info("[page_task_add]:对{}元素进行输入任务描述：{}操作".format(page.task_descript,task_description))
        self.base_input(page.task_descript,task_description)

    #点击下一步
    def task_add_click_next(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_next))
        self.base_click(page.task_next)

    #点击上传json配置
    def task_add_click_upload_config(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_upload_config))
        self.base_click(page.task_upload_config)

    #点击上传
    def task_add_click_text_primary(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_text_primary))
        self.base_click(page.task_text_primary)

    #输入文件路径
    @staticmethod
    def task_add_input_filepath(filepath):
        log.info("[page_task_add]:输入{}下的文件".format(filepath))
        FileUpload.upload_file(filepath)

    #点击确定
    def task_add_click_confirm(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_confirm))
        self.base_click(page.task_confirm)

    #点击立即创建
    def task_add_click_establish(self):
        log.info("[page_task_add]:进行下滑操作")
        js = 'window.scrollTo(0,document.body.scrollHeight);'
        self.driver.execute_script(js)
        time.sleep(2)
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_establish))
        self.base_click(page.task_establish)

    #获取新建任务成功的提示信息
    def task_add_get_success_info(self):
        log.info("[page_task_add]:正在获取{}元素的文本信息".format(page.task_add_establish_success))
        return self.base_get_text(page.task_add_establish_success)

    #获取错误信息（如未输入任务名称和任务描述）
    def task_add_empty_task_name_info(self):
        log.info("[page_task_add]:正在获取{}元素的文本信息".format(page.task_add_empty_task_name))
        return self.base_get_text(page.task_add_empty_task_name)

    #获取错误信息（如未输入任务名称和任务描述）
    def task_add_empty_task_descript_info(self):
        log.info("[page_task_add]:正在获取{}元素的文本信息".format(page.task_add_empty_task_descript))
        return self.base_get_text(page.task_add_empty_task_descript)

    #返回任务管理页面
    def task_management(self):
        log.info("[page_task_add]:对{}元素进行点击操作".format(page.task_management))
        self.base_click(page.task_management)



    #组合业务 新建任务直接用
    def page_task_add(self,task_name,task_description,file_path):
        log.info("[page_task_add]:正在执行新建任务操作，任务名称：{}，任务描述：{}".format(task_name,task_description))
        self.task_add_click_new_task()
        time.sleep(2)
        self.task_add_input_task_name(task_name)
        time.sleep(2)
        self.task_add_input_task_descript(task_description)
        time.sleep(2)
        self.task_add_click_next()
        time.sleep(2)
        self.task_add_click_upload_config()
        time.sleep(2)
        self.task_add_click_text_primary()
        time.sleep(2)
        self.task_add_input_filepath(file_path)
        time.sleep(2)
        self.task_add_click_confirm()
        time.sleep(2)
        self.task_add_click_establish()
        time.sleep(1)

    #组合业务 无任务名称和任务描述，跳出
    def page_task_add_empty_info(self,task_name,task_description):
        log.info("[page_task_add]:正在执行新建任务操作，任务名称：{}，任务描述：{}".format(task_name,task_description))
        self.task_add_click_new_task()
        time.sleep(2)
        self.task_add_input_task_name(task_name)
        time.sleep(2)
        self.task_add_input_task_descript(task_description)
        time.sleep(2)
        self.task_add_click_next()
        time.sleep(2)

    #组合新建任务业务 给其他依赖任务使用
    def page_task_add_success(self,task_name="作文标注",task_description="对ai生成的作文进行标注",file_path=page.task_filepath):
        log.info("[page_task_add]:正在执行新建任务操作，任务名称：{}，任务描述：{}".format(task_name,task_description))
        self.task_add_click_new_task()
        time.sleep(1)
        self.task_add_input_task_name(task_name)
        time.sleep(1)
        self.task_add_input_task_descript(task_description)
        time.sleep(1)
        self.task_add_click_next()
        time.sleep(1)
        self.task_add_click_upload_config()
        time.sleep(1)
        self.task_add_click_text_primary()
        time.sleep(1)
        self.task_add_input_filepath(file_path)
        time.sleep(1)
        self.task_add_click_confirm()
        time.sleep(1)
        self.task_add_click_establish()
        time.sleep(1)

    #组合编辑任务 给其他依赖任务使用
    def page_task_edit(self,task_name="作文标注2",task_description="对ai生成的作文进行标注2",file_path=page.task_filepath):
        log.info("[page_task_add]:正在执行新建任务操作，任务名称：{}，任务描述：{}".format(task_name,task_description))
        self.task_add_input_task_name(task_name)
        time.sleep(2)
        self.task_add_input_task_descript(task_description)
        time.sleep(2)
        self.task_add_click_next()
        time.sleep(2)
        self.task_add_click_upload_config()
        time.sleep(2)
        self.task_add_click_text_primary()
        time.sleep(2)
        self.task_add_input_filepath(file_path)
        time.sleep(2)
        self.task_add_click_confirm()
        time.sleep(2)

